Snowball_233

Snowball_233

A student who is learning coding.

不要过多的在意你的服务器核心与 JDK 发行版

近期在苦力怕论坛服务器插件板块群 (群号 332359582) 被询问最多的问题莫过于:我要选什么服务器核心?Folia 可以吗?我是用 Oracle 还是 Zulu?性能报告分析用 Spark 还是 Timing?等等诸如此类的实际上其实是无关紧要的问题。

在看到这些提问之后,我意识到一个问题,随着我的世界开服成本的逐渐降低,有着越来越多的萌新也想要尝试开服,想着开一个服务器火爆全网,正因如此,他们想要把服务器做得更好,但是也正因如此,他们将关注点放在了错误的地方上。真正的服主需要着眼于服务器的内容、平衡、社群、玩家,那么接下来我就要向你解释,为什么不要过多的关注其他的内容。

服务端的选择#

目前市面上的 Java 服务端主要分为以下几类:

类型名称适用范围
原版服务端Vanilla我的世界官方服务端,不能加载插件或模组
纯插件服务端Bukkit、Spigot、Paper、PurPur、Pufferfish、Folia只可以加载服务器插件的服务端,不可以加载模组
纯模组服务端Forge、Fabric、SpongeForge只可以加载模组的服务端,不可以加载服务端插件
混合服务端CatServer、Mohist、Banner、Arclight可同时加载服务端插件与模组

其中,争议最多的话题就是,我是否应该使用 Folia?这个问题的提出,显然是受到了它以多线程所著名的影响,但是,让我们来重新阅读一下 Folia 官网 对其服务端的定位:

Folia is designed to address the constant bottleneck of the Minecraft server running on a single thread causing performance issues. It is by no means a drop-in replacement for Paper.
---------
Folia 旨在解决 Minecraft 服务器在单个线程上运行导致性能瓶颈的问题。它绝不是 Paper 的替代品。

再细细品味一下这句话,你还认为你真的需要 Folia 吗?“它绝不是 Paper 的替代品。” 简明扼要地指出了其与 Paper 服务端是不同的,具体来说,从游玩体验、插件适配、稳定性上来说与 Paper 服务端都相差很大,并且它破坏了很多原版特性,难道你真的愿意为了所谓的极致性能去放弃上述所有内容吗?

让我们再来看看 Folia 官方所推荐的配置:

What hardware will Folia run best on?
Ideally, at least 16 cores (not threads).
---------
Folia 在什么硬件上运行得最好?
理想情况下,至少有16个内核(不是线程)。

所以敢问你的服务器硬件配置真的达到了推荐配置吗?你又如何保证在低于推荐配置的情况下性能仍然比传统 Paper 服务端好?

JDK 发行版的选择#

JDK (Java Development Kit),Java 开发套件,是提供开发者使用的套件,JDK 内 包含了 JRE (Java Runtime Environment),而 JVM (Java Virturl Machine) 是 JRE 的一部分,所有 Java 程序都基于 JVM 运行。

目前,在 Minecraft 服务器中较为主流的 JDK 发行版包括:OpenJDK、Azul Zulu、GraalVM、Oracle JDK 等。

其中,我以 OpenJDK 与 Azul Zulu 这两个争议最多的发行版为例子进行测试,测试脚本如下:

点击预览
#! /bin/bash

JVM_OPENJDK=openjdk-17.0.2
JVM_ZULU=zulu17.34.19-ca-jdk17.0.3-linux_x64

sudo rm -rf /home/server/jdks/test/logs*

for JVM_NAME in $JVM_OPENJDK $JVM_TEMURIN $JVM_SEMERU $JVM_ZULU $JVM_ZING; do

    echo '========================================'
    echo "Start testing $JVM_NAME"
    echo '========================================'

    sudo rm -rf /home/server/jdks/test/world

    mkdir logs
    sudo nice -n -20 /home/server/jdks/$JVM_NAME/bin/java \
              -Xmx6G -Xms6G -Xlog:gc:logs/gc.log -Xlog:gc* \
              -jar server.jar nogui | tee logs/full.log

    chmod 777 -R /home/server/jdks/test/logs
    mv -v /home/server/jdks/test/logs /home/server/jdks/test/logs-$JVM_NAME

    echo '========================================'
    echo "Finish testing $JVM_NAME"
    echo '========================================'

done

测试结果如下:

JDKChunky 用时平均暂停时间 /ms平均 GC 间隔 /s
OpenJDK9'01''50.68
Azul Zulu9'15''53.47

不难看出,平时这两组争议最多的发行版,最终测试结果也相差无几,在实际使用与体验中,很难察觉其中的不同。

总结#

综上所述,不要过多关注你的服务器核心与 JDK 发行版等这类问题上,而应把更多的精力放在游戏内容的丰富和优化上。毕竟,玩家们真正关心的是游戏的趣味性与体验,而不是你选择了哪个技术方案。希望你能把更多的时间投入到服务器的内容建设上,让你的玩家们在你的服务器中收获更多的乐趣和回忆。

此文由 Mix Space 同步更新至 xLog
原始链接为 https://blog.rescueme.life/posts/develop/donot-pay-too-much-attention-to-server-core-and-JDK


加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。